Amazon S3

Use Case

  • Backup and storage
  • Disaster recovery
  • Archive
  • Hybrid Cloud Storage
  • Application Hosting
  • Media Hosting
  • Data Lakes and Big Data analytics
  • Software Delivery
  • Static website

Bucket

  • Amazon S3 memungkinkan user menyimpan object (file) ke dalam semua bucket (root directory)
  • Bucket haruslah memiliki nama yang secara global unik (lintas region, lintas account)
  • Bucket ditentukan pada tingkatan region
Info

S3 bukanlah Global Service, melainkan Regional Service

  • Konvensi pernamaan Bucket
    • Tidak menggunakan Upper case, tanpa underscore
    • 3-63 karakter panjangnya
    • bukanlah sebuah IP
    • haruslah diawali dengan lowercase letter atau number
    • tidak boleh diakhiri dengan suffix -s3alias

Object

  • file object memiliki key
  • Key menggunakan full path
    • s3://my-bucket/my_file.txt
    • s3://my-bucket/my-folder/another_folder/my_file.txt
  • key terdiri prefix + object name
    • s3://my-bucket/my_folder/another_folder/my_file.txt
  • Object value adalah content dari body
    • maksimum dari ukuran object adalah 5TB (5000GB)
    • Jika ingin mengupload lebih dari 5GB, gunakan multi-part upload
  • Metadata (list of text key/ value pairs - system atau user metadata)
  • Tags (Unicode key /value pair - up to 10) - berguna untuk security /lifecyctle
  • Version ID (jika versioniing diaktifkan)

Security

  • Ada beberpa pendekatan untuk mengaman bucket pada S3
    • User Based
      • menggunakan IAM Policies - dimana API call harus diijinkan untuk untuk tertentu melalui IAM
    • Resource Based
      • Bucket Policies : rule pada bucket melalui S3 console, untuk mengijinkan user tertentu mengakses bucket (meskipun lintas account)
      • Object Acces Control List (ACL) : policy yang lebih halus / rinci (bisa di-disable)
      • Bucket Access Control List (ACL) : tidak umum (bisa di-disable)
    • Enkripsi
      • enkripsi object di Amazon S3 menggunakan encryption keys
  • Catatan:
    • IAM principal dapat mengakses S3 Object jika
      • user di dalam IAM permission memberikan akses ALLOW atau resource policy memberikan akses ALLOW
      • Tidak memiliki explicity DENY

Bucket Policies

  • JSON based policies terdiri dari
    • Resources
    • Effect: Allow / Deny
    • Actions: Mengatur API mana yang di-Allow dan di-Deny
    • Principal : Account atau user yang diassign oleh policy tersebut
  • Gunakan S3 bucket policy untuk keperluan sebagai berikut
    • memberikan akses public kepada bucket
    • Memaksa object untuk men-enkripsi upload

Static Website Hosting

  • User dapat melakukan versioning terhadap file di Amazon S3
    • pengaturan versioning dilakukan pada level bucket
  • jika konten pada key yang sama di-overwrite, maka version akan berubah
  • best practice, untuk melakukan versioning dari bucket
    • misalnya untuk melindungi file dari insiden tidak sengaja di-delete
    • kemudahan untuk roll back ke versi sebelumnya
  • Catatan :
    • tidak semua file yang tidak diaktifkan versioning-nya akan memiliki version null
    • jika versioning di-disable (di-suspend), maka file yang sudah di-versioning sebelumnya tidak akan terhapus

Replication (CRR and SRR)

  • Terdapat dua jenis replikasi di dalam S3
    • CRR (Cross Region Replication)
    • SRR (Same Region Replication)
  • Apa yang perlu diperhatikan untuk melakukan replikasi
    • Enable versioning pada bucket asal dan tujuan
    • Bucket asal dan tujuan boleh berbeda account
    • proses copy terjadi secara async
    • Berikan akses permission yang sesuai pada S3
  • Use case dari replikasi
    • CRR : untuk compliance, lower latency access, replikasi lintas account
    • SRR : log aggregation, replikasi langsung antara account production dan account test
  • Catatan:
    • Setelah pilihan replication diaktifkan, hanya object yang baru yang akan direplikasi
    • Secara opsional, user dapat mereplikasi object eksisting menggunakan fitur S3 Batch Replication
      • untuk mereplikasi object eksisting dan object yang gagal direplikasi
    • untuk operasi DELETE :
      • dapat direplikasi dengan delete marker dari source ke target (opsional)
      • proses delete dengan menggunakan version ID tidak akan direplikasi (untuk menghindari proses delete yang tidak disengaja)
    • Tidak ada fitur replikasi berantai (lebih dari 2) dari bucket 1, bucket 2, bucket 3

S3 Storage Classes

  • Amazon S3 Standard
    • General Purpose storage
    •  frequently accessed data
  • Amazon S3 Standard - IA
    •  less frequently accessed data
  • Amazon S3 One Zone IA
    •  less frequently accessed data and lower availability requirements
  • Amazon S3 Glacier Instant Retrieval
    •  lower-cost archival storage that may require retrieval at any time.
  • Amazon S3 Glacier Flexible Retrieval
    • low-cost archival storage with retrieval time from minutes to hours
  • Amazon S3 Glacier Deep Archive
    • lowest-cost storage with retrieval times up to 12 hours
  • Amazon S3 Intelligen Tiering
    • unknown or changing access patterns

Amazon S3 storage analytics and insights

S3 Storage Lens

  • Organization-wide visibility into object storage usage and activity trends
  • Provides automated recommendations to help you optimize your storage

S3 Storage Class Analysis

  • Analyzes storage access patterns to help you determine when to transition less frequently accessed storage to a lower-cost storage class.
  • You can use the results to help improve your S3 Lifecycle policies

Durability and Availability

  • Durability
    • High Durability 99,999999999% object lintas AZ
    • jika data yang disimpan 10 juta object, maka kemungkinan terjadi kehilangan object adalah 1 object di setiap 10 ribu tahun
    • berlaku untuk semua storage class
  • Availability
    • Mengukur ketersedian object saat diakses
    • Availabilit bervariasi bergantung pada storage class-nya
    • Contoh :
      • S3 standar memiliki 99,99% availability -> artinya di dalam setahun ada kemungkinan mengalami not available 53 menit setahun

S3 Standard

  • Memiliki Availability 99,99%
  • Digunakan untuk data yang paling sering diakses
  • Low latency dan throughput yang tinggi
  • dapat bertahan dari dua kegagalan fasilitas secara paralel
  • Use case :
    • Big Data analytics
    • Mobile and gaming application
    • content distribution

S3 Infrequent Access

  • Untuk data yang jarang diakses, namun memerlukan akses lebih cepat jika dibutuhkan
    • biaya penyimpanan lebih murah ketimbang S3 Standard
    • biaya retrieval lebih mahal
  • S3 Standard IA
    • Memiliki 99.9% availability
    • Use case : Disaster Recovery, backup
  • S3 One Zone - IA
    • High Durability (99,999999999%) di dalam single AZ, data hilang jika AZ dihancurkan
    • Availabity 99,95
    • Use case : menyimpan secondary backup copy dari data on-premise atau data yang bisa dicreate ulang

S3 Glacier

  • harga lebih murah. Untuk keperluan archiving atau backup
  • Skema harga
    • harga untuk storage -> lebih murah
    • harga retrieval
  • S3 Glacier Instant Retrieval
    • retrieval dalam jangka ms, cocok untuk data yang diakses sekali selama 3 bulan
    • Minimal durasi penyimpanan 90 hari
  • S3 Glacier Flexible Retrieval
    • Terdiri dari 3 jenis
      • Expedited (1-5 ment)
      • Standard (3 hingga 5 jam)
      • Bulk (5 hingga 12 jam) - Free
    • Minimum penyimpanan 90 hari
  • S3 Glacier Deep Archive -> untuk penyimpanan jangka panjang
    • Terdapat dua jenis retrieval
      • Standard (12 jam)
      • Bulk (48 jam)
    • Durasi penyimpanan minimal 180 hari

S3 Intelligent Tiering

  • terdapat biaya monitoring dan auto tiering
  • Dapat memindah object secara otomatis diantara access tier berdasarkan penggunaan
  • Tidak biaya retrieval pada S3 Intelligent Tiering
  • Beberapa tier dari S3 Intelligent Tiering
    • Untuk Frequent Access Tier (automatic): default tier
    • Infrequent Access Tier (automatic): Object tidak diakses selama 30 hari
    • Archive Instant Access Tier (automatic): Object tidak dapat diakses 90 hari
    • Archive Access Tier (optional): Dapat dikonfigurasi dari 90 hari hingga 700+ hari
    • Deep Archive Acess Tier (optional): config dari 180 hari sampai 700+ hari

Lifecycle Rules

  • User can transition object between storage classes
    • misal :
      • from IA object -> move to Standard IA
      • archive object (object yang tidak memerlukan akses cepat)-> dipindahke ke Glacier atau Glacier Deep Archice
  • Untuk memudahkan object secara otomatis dapat menggunakan Lifecycle Rules
  • Beberapa hal yang perlu diperhatikan dalam Lifecycle Rules :
    • Transition Actions : Konfigurasi object untuk bertransisi ke storage class yang lain
      • misalnya,
        • memindah object ke class Standard IA setelah 60 hari dibuat
        • memindah ke Glacier untuk archiving setelah 6 bulan
    • Expiration Actions: Mengonfigurasi object untuk menghapus object yang expire dalam jangka waktu tertentu
      • misalnya,
        • log file access dapat diatur untuk dihapus setelah 365 hari
        • dapat menghapus version file
        • dapat digunakan untuk menghapus Multi part upload yang tidak komplit
    • Rule dapat dibuat untuk prefix tertentu (misalnya : s3://mybucket/mp3/*)
    • Rule dapat dibuat untuk Tag object tertentu (misalnya: Departement : Finance)

Scenario 1

  • Aplikasi di dalam EC2 bertugas membuat thumbnail images setelah profile prohoto di-upload untuk Amazon S3. Thumbnail tersebut dapat dengan mudah di-recreate ulang dan hanya perlu disimpan untuk 60 hari. sumber image seharusnya dapat dengan mudah di-retrieve setelah 60 hari, dan setelahnya, user harus menunggu 6 jam. bagaimana anda merancang ini?
    • S3 source image dapat ditempatkan pada class Standard, dengan LC configuration untuk berpindah ke Glacier setelah 60 hari
    • S3 thumbnail dapat ditempatkan pada One-Zone IA dengan LC configuration untuk menghapusnya setelah 60 hari

Scenario 2

  • Sebuah aturan di dalam perusahaan, menyatakan bahwa, object S3 harus dapat di-recover setelah dihapus dari S3 terhitung 30 hari. Setelah 30 hari, object dengan usia kurang dari 365 hari dapat direcover dalam jangka waktu 48 jam
    • Untuk melakukan ini, enable s3 versioning, dengan tujuan agar deleted object, hanya di-hidden saja dengan menggunalan delete marker
    • Lakukan transisi untuk noncurrent version ke object Standard IA
    • Transisis setelah noncurrent version ke Glacier Deep Archive

Amazon S3 Analytics Storage Class Analysis

  • Analisis yang membantu untuk memutuskan ketika memindahkan object ke storage class yang tepat
  • Rekomendasi untuk class Standard, dan Standard IA
    • tidak bekerja untuk One-Zone IA atau Glacier
  • Report akan diupdate secara berkala harian
  • 24 hingga 48 jam untuk melihat data analysis

S3 Event Notification

S3 Baseline Performance

S3 Select and Glacie Select

  • Fitur ini digunakan untuk melakukan filtering data
  • Sebelum S3 select:
    • semua data diambil kemudian di filter di application side
  • Dengan menggunakan S3 Select
    • user memerintahkan Amazon S3 untuk memfilter file, dan data yang diberikan hanyalah yang dipelrukan
    • lebih murah

S3 Batch Operations

S3 Encryption

  • Ada beberapa pilihan enkripsi yang dapat digunakan pada S3 bucket, menggunakan satu dari 4 method
    • Server-Side Encryption (SSE)
      • Server-SIde Encryption dengan Amazon S3-Managed Keys (SSE-S3)
        • diaktifkan secara default
        • enkripsi S3 object menggunakan key yang ditangani, dikelola dan dimiliki oleh AWS
      • SSE with KMS (SSE-KMS)
        • Keys disimpan di AWS KMS
        • menggunakan AWS KMS untuk mengelola encryption key
      • SSE with Customer Provided Keys (SSE-C)
        • digunakan ketika ingin mengelola enkripsi key -nya sendiri
        • hanya dapat dipakai menggunakan CLI
      • DSSE-KMS (Dual Layer SSE with KMS)
    • Client Side Encryption

SSE-S3

SSE-KMS

SSE-C

Default Encryption vs Bucket Policies

  • Secara default S3 memiliki enkripsi default SSE S3
    • SSE-S3 encryption secara otomatis diterapkan ke object baru yang disimpan pada S3 bucket
  • Dengan menambahkan Bucket Policies, user dapat memberi kondisi agar setiap API cal haruslah menggunakan enkripsi header (SSE-KMS atau SSE-C)
    • menggunkan field Statement.Condition
Info

bucket policies akan di-evaluasi terlebih dahulu sebelum default encryption settings

S3 CORS

  • CORS singkatan dari Cross-Origin Resource Sharing
    • Origin = scheme (protocol) + host (domain) + port
      • misal : https://subrutin.com
  • CORS merupakan mekanisme berbasis web broser yang mengijinkan request ke other origin, sementara sedang mengakses origin utama
  • request tidak akan dilaksanakan jika other origin tidak mengijinkan request menggunakan CORS headers
  • jika klien membuat cross-origin request menggunakan S3 bucket, user perlu menkonfigurasi CORS header yang tepat
    • dapat menggunakan origin spesifik atau * untuk semua origin

MFA Delete

  • mekanisme untuk memaksa user menggunakan MFA ketika melakukan operasi penting pada S3
  • MFA diperlukan ketika
    • menghapus object version
    • suspend versioning pada bucket
  • untuk menggunakan MFA delete, versioning harus diaktifkan pada bucket
  • hanya bucket owner (root account) yang dapat meng-enable/disable MFA delete

Pre-Signed URL

  • URL yang dibuat menggunakan S3 Console, AWS CLI, dan SDK dengan tujuan untuk dapat diakses publik di luar AWS di dalam jangka waktu tertentu
  • URL tersebut memiliki batas kadaluarsa sebagai berikut
    • S3 Console - 1 menit s/d 720 menit (12 jam)
    • AWS CLI - Dapat dikonfigurasi kadaluarsanya, default 3600 detik s/d 167 jam
  • Use Case
    • mengijinkan hanya user yang login yang dapat mengakses video premium dari S3 bucket
    • mengijinkan daftar user yang berubah untuk mengunduh file dengan membuat URL secara dinamis
    • mengijinkan secara sementara user untuk mengupload file untuk mengarahkan lokasi yang secara spesifik di S3 bucket

Glacier Vault Lock and Object Lock

Glacier Vault

  • Adopt a WORM (Write Once Read Many) model
  • object yang dimasukan ke dalam Glacier Vault tidak dapat dihapus atau dimodifikasi
  • Untuk keperluan tersebut yang harus dilakukan adalah
    • membuat Vault Lock Policy
    • Lock policy agar tidak dapat didelete dan diedit oleh siapapun
  • Berguna untuk compliance dan data retention

S3 Object Lock

  • Mengadopsi WORM model
  • user harus mengaktifikan untuk versioning object
  • blok object version selama jangka waktu tertentu agar tidak dapat dihapus
  • ada dua retention mode
    Compliance Mode
    mirip dengan Glacier Valult Lock
    object version tidak dapat di-overwritten atau didelete oleh user siapapun termasuk root user
    object retention mode tidak dapat diubah dan periode retention tidak dapat diperpendek
    Governance
    lebih fleksibel
    sebagian besar user tidak dapat men-overwrite atau delete object version atau mengubah pengaturan lock
    beberapa user memiliki special permission untuk mengubah retensi atau delete object
    Info

    retention period: proteksi object untuk jangka waktu tertentu dan dapat diperpanjang
    Legal Hold : melindungi object tanpa batas waktu, terlepas dari retention period, untuk menghapus dan mengaturnya perlu akses IAM permission s3:PutObjectLegalHold